package com.okcl.manager.service;

import com.github.pagehelper.PageInfo;
import com.okcl.model.dto.system.AssginRoleDto;
import com.okcl.model.dto.system.LoginDto;
import com.okcl.model.dto.system.SysUserDto;
import com.okcl.model.entity.system.SysUser;
import com.okcl.model.vo.h5.UserInfoVo;
import com.okcl.model.vo.system.LoginVo;
import com.okcl.model.vo.system.SysMenuVo;

import java.util.List;

public interface SysUserService {
    /**
     * 登录
     *
     * @param loginDto
     * @return
     */
    LoginVo login(LoginDto loginDto);

    /**
     * 获取当前登录用户信息
     *
     * @param token
     * @return
     */
    UserInfoVo getUserInfo(String token);

    /**
     * 用户退出
     *
     * @param token
     */
    void logout(String token);

    /**
     * 查询用户列表
     *
     * @param sysUserDto
     * @return
     */
    PageInfo<SysUser> queryPageUserList(SysUserDto sysUserDto);

    /**
     * 添加用户
     *
     * @param sysUser
     */
    void save(SysUser sysUser);

    /**
     * 修改用户
     *
     * @param sysUser
     */
    void edit(SysUser sysUser);

    /**
     * 删除用户
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 为用户分配角色
     *
     * @param assginRoleDto
     */
    void assignRole(AssginRoleDto assginRoleDto);

    /**
     * 获取用户角色id列表
     *
     * @param id
     * @return
     */
    List<Long> getRoleIdList(Long id);

    /**
     * 获取用户菜单列表
     *
     * @return
     */
    List<SysMenuVo> queryMenuByUserId();
}
